Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
Cloud computing can include a plurality of server computers interconnected within a data center. The server computers typically include expansion boards (also called expansion cards) which can be inserted into expansion slots on the server computers to add functionality to the computer system. A server computer communicates with the expansion cards through an expansion bus which electrically connects the internal hardware of the computer with peripheral devices. One type of expansion card includes a network interface card (NIC) which typically provides the server computer with a dedicated, full-time connection to a network.
One type of expansion bus is a Peripheral Component Interconnect Express (PCIe) bus which is a high-speed serial computer expansion bus standard. Other bus types can also be used in place of the PCIe bus, such as the ASUS media bus, the multi-bus, SBUS, etc. Expansion cards that include a CPU and/or DRAM are considered to be “smart” cards. The smart expansion cards can be programmed to run various software applications that enables the card to provide increased flexibility over typical hardware-only interface cards.
The expansion cards can have various types of error reporting. For example, PCIe uses the advanced error reporting (AER) to report errors to the host server computer. Example errors can include a link error, a parity error, etc. Testing of errors can be problematic and there are a variety of errors that rarely occur, which are even more difficult to detect.
The expansion cards can also represent a vulnerability for attacks from malicious software. For example, malicious software can inject errors into the server bus in order to create problems on the host server computer. Thus, it is desirable to perform testing on any expansion card to prevent attacks on the server computer via malicious software injected through the expansion card. Additionally, updates of the server computer, such as updates of the operating system or BIOS, can expose the host server computer to new malicious attacks via the expansion card.